package com.exchange.config;

import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSON;
import com.exchange.entity.pojo.PowerStatus;
import com.exchange.entity.vo.PowerStatusVo;
import com.exchange.service.PowerStatusService;
import io.swagger.v3.core.util.Json;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;

import java.util.List;
import java.util.Map;

/**
 * @Author : RulerWood
 * @Data : 2024/5/9 - 9:57
 */
@Configuration
public class BeatRegularTime {
    @Autowired
    private RedisTemplate<String, String> redisTemplate;
    @Autowired
    private PowerStatusService powerStatusService;

    /**
     * 该定时任务所模拟的是我们的云平台去收集设备的心跳包
     * 包括但不限于，可使用的电柜的状态接收
     * 还有我们的一个损坏电站的接收，也是为了去实现我们管理人员的售后服务
     */
//    @Scheduled(cron = "*/20 * * * * *")
//    public void sendBeat() {
//        List<String> allDeviceDisplay = redisTemplate.opsForList().range("all_device_display", 0, -1);
//        if (ObjectUtil.isEmpty(allDeviceDisplay)) {
//            //redis中是空的那么在数据库中去拿取
//            List<PowerStatusVo> powerStatusList = this.powerStatusService.findAllPower();
//            for (PowerStatusVo powerStatusVo : powerStatusList) {
//                redisTemplate.opsForList().rightPush("all_device_display", JSON.toJSONString(powerStatusVo));
//            }
//        }
//    }

    /**
     * 每10秒钟刷新一次，我们用来模拟设备到云平台的心跳
     */
//    @Scheduled(cron = "*/10 * * * * *")
//    public void toCloudBeat() {
//        List<String> allDeviceDisplay = redisTemplate.opsForList().range("all_device_display", 0, -1);
//        if (ObjectUtil.isEmpty(allDeviceDisplay)) {
//            //redis中是空的那么在数据库中去拿取
//            List<PowerStatusVo> powerStatusList = this.powerStatusService.findAllPower();
//            for (PowerStatusVo powerStatusVo : powerStatusList) {
//                redisTemplate.opsForList().rightPush("all_device_display", JSON.toJSONString(powerStatusVo));
//            }
//        }
//    }

}
